SideButton Marketing Website Knowledge Module
SideButton Marketing Website Portal — Automations — Knowledge Module Reference
SideButton Marketing Website knowledge module — UI selectors, data model, and page states documenting Portal — Automations.
sidebutton install SideButton Marketing Website - Path
- /portal/automations
- Verified
- 2026-03-24
- Confidence
- 97%
- Role playbooks
- 0
- Pack
- SideButton Marketing Website
- Domain
- sidebutton.com
What This Is
Workflow trigger automation page -- allows creating automations that automatically dispatch workflow jobs to agents based on events from Jira, SideButton, or a cron schedule. Each automation has a WHEN trigger configuration and a WHAT action configuration (workflow, agent, effort level). Automations can be enabled/disabled via toggle switches, manually triggered, and show dispatch count badges linking to the queue. The page lists all automations with their trigger type, workflow label, and action buttons.
URL Patterns
| Pattern | Description |
|---|---|
/portal/automations | Automation list |
/portal/automations/{id} | Automation detail view |
/portal/automations/{id}/edit | Edit automation |
Page Structure
+--[Sidebar]--+--[Main Content]------------------------------------------+
| Chat | H1: "Automations" [+ New Automation] button |
| Agents | "N automations" |
| Jobs | |
| Queue | [Create Form] (hidden by default) |
| Automations| Name [text input] |
| Workflows | WHEN — Trigger |
| Settings | Trigger Type [dropdown: Jira / SideButton / Cron] |
| | [Dynamic trigger properties] |
| | WHAT — Action |
| | Workflow [dropdown] |
| | Agent [dropdown] |
| | [Dynamic workflow params] |
| | Effort [Max / High / Medium toggle] |
| | [Cancel] [Save] |
| | |
| | [Automation List] |
| | [toggle] Name [trigger badge] [workflow label] |
| | [dispatch count badge] [edit] [trigger] [del] |
| | |
| | OR "No automations yet" empty state |
+-------------+-----------------------------------------------------------+
Key Elements
Header
| Element | Selector / Ref | Notes |
|---|---|---|
| Page heading | heading "Automations" | H1 |
| Automation count | [data-automation-count] | "N automations" or "N automation" |
| New Automation button | button "+ New Automation" | Sky blue outlined button, top-right, shows create form |
Create/Edit Form
| Element | Selector / Ref | Notes |
|---|---|---|
| Name input | #form-name | Text input, placeholder "My automation" |
| WHEN section | .p-4.rounded-lg (1st) | "When — Trigger" label, contains trigger type and properties |
| Trigger Type dropdown | #form-trigger-type | Options: "— Select Trigger —", "Jira", "SideButton", "Cron" |
| Trigger properties | #trigger-properties | Dynamic container — content changes based on trigger type |
Jira Trigger Properties (when trigger_type = "Jira")
Requires Jira credentials in Settings. If not configured, filter controls are replaced by a yellow warning banner: "Jira connection required — Configure Jira URL, email, and API token in Settings to enable filters." with a link to Settings.
| Element | Selector / Ref | Notes |
|---|---|---|
| Warning banner | Yellow box in #trigger-properties | Shown when Jira is not configured; replaces filter controls |
| Settings link | link "Settings" inside warning | Links to /portal/settings |
| Project filter | #jira-project | Select dropdown for Jira project (only when configured) |
| Issue type filter | #jira-issue-type | Select dropdown for issue type (only when configured) |
| Assignee search | #jira-user | Text input with datalist autocomplete (only when configured) |
| Assignee hidden value | #jira-user-value | Hidden field storing account ID |
| Assignee datalist | #assignee-list | Datalist for user autocomplete |
| Status filter | #jira-status | Select dropdown for issue status (only when configured) |
SideButton Trigger Properties (when trigger_type = "SideButton")
Shows "SIDEBUTTON TRIGGER FILTERS" section heading. Workflow and Event Type dropdowns are side-by-side; Agent is on a separate row below.
| Element | Selector / Ref | Notes |
|---|---|---|
| Workflow filter | #sb-workflow | Select dropdown, labeled "Workflow (optional)". Default "Any workflow". Lists all 13 workflows as Title-Case-Dash names (e.g. "Se-Work", "Qa-Validate") |
| Event type filter | #sb-event-type | Select, labeled "Event Type (optional)". Default "Any event". Options: "Completed", "Started" |
| Agent filter | #sb-agent | Select, labeled "Agent (optional)". Default "Any agent". Options include "Same agent (from triggering job)" + specific agents |
| Info text | Below agent filter | "Agent name and ticket URL (if present) from the triggering job will be passed to the dispatched job." |
Cron Trigger Properties (when trigger_type = "Cron")
Shows "CRON TRIGGER" section heading.
| Element | Selector / Ref | Notes |
|---|---|---|
| Schedule input | #cron-schedule | Text input labeled "Schedule", placeholder "minute hour day month weekday" |
| Preset buttons | .cron-preset | Buttons with data-cron attr: "Every hour", "Daily 9am", "Weekdays 9am", "Weekly Mon 9am" |
| Info text | Below presets | "No ticket_url is mapped for cron triggers. Set a static value in workflow params if needed." |
WHAT — Action Section
| Element | Selector / Ref | Notes |
|---|---|---|
| WHAT section | .p-4.rounded-lg (2nd) | "What — Action" label, contains workflow, agent, params, effort |
| Workflow dropdown | #form-workflow | 13 workflows across all roles (SE, QA, PM, OPS, SD). Uses dash-separated IDs (e.g. se-work, qa-validate, pm-drive) |
| Agent dropdown | #form-agent | Default "Any available agent", lists all agents with display_name + hostname |
| Workflow params container | #workflow-params | "WORKFLOW PARAMETERS" heading. Appears when any workflow is selected. All workflows show ticket_url + hint params |
| Ticket URL param | #param-ticket-url | Text input. Auto-filled with {{trigger.ticket_url}} for Jira/SideButton triggers. Help text: "Ticket URL passed to the workflow. Use {{trigger.ticket_url}} for auto-mapping." |
| Hint param | #param-hint | Textarea, labeled "hint (optional)". Placeholder: "Static instructions for the workflow.." |
| Available variables | Below hint | Context-aware per trigger type: Jira shows 6 vars, SideButton shows 4 vars, Cron shows "No trigger variables available" |
| Effort toggle buttons | #form-effort-group | Max / High / Medium buttons — Medium selected by default (sky highlight) |
| Cancel button | #form-cancel-btn or #form-cancel-btn-2 | Closes form without saving |
| Save button | #form-save-btn | Sky blue button, saves the automation |
| Close (X) button | Form header X icon | Closes form |
Automation List
| Element | Selector / Ref | Notes |
|---|---|---|
| Column headers | "Automation" + "Actions" | Table header row |
| Automation row | [data-automation-row="{id}"] | Container for each automation row |
| Toggle switch | [data-toggle-automation="{id}"] | Emerald when enabled, slate when disabled. Click toggles automation |
| Automation name | Link text | Clickable, navigates to /portal/automations/{id} detail page |
| Trigger type badge | Colored pill | Jira (blue text-blue-400), Cron (violet text-violet-400), SideButton (emerald text-emerald-400) |
| Workflow label | Below name | Formatted workflow name (e.g. "QA Validate", "SE Work") |
| Dispatch count badge | Amber badge | "N jobs" — links to /portal/queue?automation_id={id}, shows total dispatched count |
| Edit button | Pencil icon link | Links to /portal/automations/{id}/edit |
| Manual trigger button | Play icon button | Manually fires the automation |
| Delete button | [data-delete-automation="{id}"] | Trash icon, deletes the automation (with confirmation) |
| Disabled row | Automation disabled | Row shown at 50% opacity |
Detail Page (/portal/automations/{id})
| Element | Selector / Ref | Notes |
|---|---|---|
| Enable/disable toggle | #detail-toggle | bg-emerald-500 when enabled, bg-slate-600 when disabled |
| Toggle label | #detail-toggle-label | "Enabled" / "Disabled" text |
| Manual trigger button | #trigger-btn | Opens trigger dialog |
| Delete button | #delete-btn | Deletes automation |
| Trigger dialog | #trigger-dialog | Modal, initially hidden |
| Dialog ticket URL | #trigger-ticket-url | Optional ticket URL input in trigger dialog |
| Dialog dispatch button | #trigger-confirm | Confirms manual trigger dispatch |
| Dialog cancel button | #trigger-cancel | Cancels trigger dialog |
| Dialog result | #trigger-result | Shows dispatch result message |
| Logs container | #logs-content | Paginated trigger execution log entries |
| Logs pagination info | #logs-info | Pagination info text |
| Logs prev button | #logs-prev | Previous page of logs |
| Logs next button | #logs-next | Next page of logs |
Empty State
| Element | Notes |
|---|---|
| Empty icon | Refresh/cycle icon in rounded box |
| Empty text | "No automations yet" |
| Empty hint | "Automations trigger workflows based on events from Jira, SideButton, or a cron schedule" |
Data Model
Automation
| Field | Type | Description |
|---|---|---|
| id | number | Automation ID (auto-increment) |
| account_id | number | Account that owns this automation |
| name | string | User-defined automation name |
| enabled | number | SQLite boolean (0/1) — whether automation is active |
| trigger_type | string | "jira" / "sidebutton" / "cron" |
| trigger_config | string (JSON) | Trigger-specific configuration (Jira filters, cron expression, etc.) |
| action_workflow | string | Workflow ID to dispatch (e.g. "qa-validate") |
| action_config | string (JSON) | Action params: agent, effort, workflow input overrides |
| created_at | string (datetime) | Creation timestamp |
| updated_at | string (datetime) | Last update timestamp |
Automation Log
| Field | Type | Description |
|---|---|---|
| id | number | Log entry ID |
| automation_id | number | Parent automation |
| trigger_event | string (JSON) | Incoming event payload that triggered evaluation |
| matched | number | SQLite boolean — whether event matched trigger filters |
| dispatched_job_id | number (nullable) | Job ID if dispatch succeeded |
| created_at | string (datetime) | When event was processed |
Trigger Types
| Type | Badge Color | Configuration |
|---|---|---|
| Jira | Blue | Webhook filters: project, issue type, assignee, status. Auto-passes: trigger.ticket_url, trigger.project, trigger.assignee, trigger.status, trigger.issue_type, trigger.issue_key |
| SideButton | Emerald | Job lifecycle events (started/completed). Filters: workflow, event_type, agent. Agent "same" = triggers on same agent. Auto-passes: trigger.ticket_url, trigger.workflow, trigger.agent, trigger.event |
| Cron | Violet | Standard 5-field cron format. Presets: "Every hour", "Daily 9am", "Weekdays 9am", "Weekly Mon 9am". No auto-mapped variables |
Template Variables
Trigger variables can be used in workflow params via {{trigger.variable_name}} syntax. The ticket_url param auto-fills with {{trigger.ticket_url}} for Jira and SideButton triggers. The form shows available variables contextually below the hint field:
| Trigger Type | Available Variables |
|---|---|
| Jira | {{trigger.ticket_url}}, {{trigger.project}}, {{trigger.assignee}}, {{trigger.status}}, {{trigger.issue_type}}, {{trigger.issue_key}} |
| SideButton | {{trigger.ticket_url}}, {{trigger.workflow}}, {{trigger.agent}}, {{trigger.event}} |
| Cron | None — shows "No trigger variables available" |
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/automations | List all automations for account |
| POST | /api/automations | Create new automation |
| PUT | /api/automations/:id | Update automation |
| DELETE | /api/automations/:id | Delete automation |
| PUT | /api/automations/:id/toggle | Toggle enabled/disabled |
| POST | /api/automations/:id/trigger | Manually trigger, returns { success, jobId } |
| GET | /api/automations/:id/logs?limit=50&offset=0 | Paginated trigger execution logs |
Available Workflows (all roles)
| Display Name | Value | Role |
|---|---|---|
| PM Agent: Drive Ticket | pm-drive | PM |
| PM Agent: Sprint Lifecycle | pm-sprint | PM |
| Ops: Pull All Repos | pull-repos | OPS |
| QA: Re-review PR After Fixes | qa-followup | QA |
| QA: Test Live Site (New Ticket) | qa-new-ticket | QA |
| QA: Regression Test (Live Site) | qa-regression | QA |
| QA: Review PR Fix | qa-validate | QA |
| SD Agent: Fill Skill Module | sd-coverage | SD |
| SE Agent: Apply Review Feedback | se-followup | SE |
| SE Agent: Root Cause Analysis | se-rca | SE |
| SE Agent: RCA + Fix + PR | se-rca-fix | SE |
| SE Agent: Implement Fix + PR | se-work | SE |
States & Variations
| State | Trigger | Visual Indicator |
|---|---|---|
| No automations | Account has none created | "No automations yet" empty state with hint |
| Form hidden | Default | Only header and list visible |
| Form visible | Click "+ New Automation" | Create form appears above list |
| Automation enabled | toggle on | Emerald toggle, full opacity row |
| Automation disabled | toggle off | Slate toggle, 50% opacity row |
| Has dispatches | Jobs dispatched | Amber "N jobs" badge linking to queue |
| No dispatches | No jobs yet | No dispatch count badge shown |
| Jira trigger | trigger_type = 'jira' | Blue "Jira" badge |
| Cron trigger | trigger_type = 'cron' | Violet "Cron" badge |
| SideButton trigger | trigger_type = 'sidebutton' | Emerald "SideButton" badge |
| Jira not configured | No Jira credentials in Settings | Yellow warning banner: "Jira connection required" with Settings link; filter controls hidden |
| Detail page | Click automation name | Shows config, toggle, trigger button, delete, and logs |
| Trigger dialog open | Click trigger button on detail | Modal with optional ticket URL and dispatch button |
| Trigger dialog result | After dispatch | Shows success message with job ID |
| Edit page | Click pencil icon | Form pre-filled with automation config at /portal/automations/{id}/edit |
| Logs displayed | Detail page load | Paginated trigger log entries below automation config |
Common Tasks
1. Create a new automation
- Click "+ New Automation" button
- Enter a name (e.g. "Auto-QA on ticket update")
- In WHEN section, select Trigger Type (e.g. "Jira")
- Configure trigger properties (e.g. Jira filters)
- In WHAT section, select Workflow (e.g. "QA Validate")
- Optionally select Agent (defaults to "Any available agent")
- Optionally fill workflow params
- Select Effort level (defaults to Medium)
- Click "Save"
2. Enable/disable an automation
- Click the toggle switch on the automation row
- Toggle changes color: emerald = enabled, slate = disabled
3. Manually trigger an automation
- Click the play icon button on the automation row
- Automation fires immediately regardless of trigger config
4. View dispatch history
- Click the amber "N jobs" badge on the automation row
- Navigates to
/portal/queue?automation_id={id}showing all items from this automation
5. Edit an automation
- Click the pencil icon on the automation row
- Navigates to
/portal/automations/{id}/edit
6. Delete an automation
- Click the trash icon on the automation row
- Confirm deletion
7. View automation detail and logs
- Click the automation name link in the list
- Detail page shows config summary, enable/disable toggle, trigger/delete buttons
- Trigger logs section shows paginated history of trigger events and dispatch results
8. Manually trigger from detail page
- Navigate to automation detail page
- Click the trigger button (
#trigger-btn) - Trigger dialog opens with optional ticket URL input
- Optionally enter a ticket URL
- Click "Dispatch" to trigger, result message shows job ID
9. Configure Jira trigger
- Select "Jira" as Trigger Type
- Optionally filter by Project, Issue Type, Assignee (with autocomplete), Status
- In Workflow Params, use
{{trigger.ticket_url}}for auto-filled ticket URL
10. Configure Cron trigger
- Select "Cron" as Trigger Type
- Enter cron expression (minute hour day month weekday) or click a preset button
- Presets: "Every hour", "Daily 9am", "Weekdays 9am", "Weekly Mon 9am"
11. Configure SideButton trigger
- Select "SideButton" as Trigger Type
- Optionally filter by Workflow, Event Type (completed/started), Agent
- Agent "same" option chains to the same agent that ran the triggering job
Tips
- Automations default effort to Medium (Sonnet), unlike Queue which defaults to High (Opus)
- Jira automations require Jira credentials configured in Settings > General (jira_url, jira_email, jira_api_token)
- Jira trigger events include "jira:issue_updated" — the hint field in dispatched jobs shows the trigger context
- Dispatch count badge links to the queue filtered by automation_id for tracing
- Automations dispatch to the queue (source="automation"), which then dispatches to agents
- The automation name link navigates to a detail page at
/portal/automations/{id} - Template variables like
{{trigger.ticket_url}}in params auto-fill from trigger event data - SideButton trigger "same" agent option enables chaining (e.g., SE finishes → QA runs on same agent)
- Loop prevention: jobs with
source='automation'are skipped by the automation trigger handler — no infinite loops - Cron preset buttons fill the expression field — click then adjust if needed
- Detail page trigger dialog allows specifying an optional ticket URL for the dispatched job
Gotchas
- Effort default differs: Automation form defaults to Medium (Sonnet), while Queue form defaults to High (Opus)
- Jira config required: Jira trigger type shows yellow warning banner and hides filter controls when Jira credentials are not configured in Settings. The warning includes a link to Settings.
- All workflow roles available: Automations now include all 13 workflows across SE, QA, PM, OPS, and SD roles — not limited to SE/QA
- Toggle is non-destructive: Disabling an automation doesn't delete it or cancel pending items
- Manual trigger: The play button fires the automation once immediately — useful for testing
- Delete confirmation: Delete button should show a confirmation before removing the automation
- Dispatch count badge: Shows total dispatched count, not just active/pending — includes completed/failed
- Agent dropdown format: Shows "display_name (hostname)" when display_name is set, otherwise just hostname
- Loop prevention: Automation-dispatched jobs (source='automation') don't re-trigger automations — but manual triggers do
- SideButton "same" agent: The "same" option dispatches to the agent that ran the triggering job, not a random available agent
- Jira assignee autocomplete: The
#jira-userinput uses a datalist for autocomplete, with the actual account ID stored in hidden#jira-user-value - Trigger logs pagination: Detail page logs load 50 per page with prev/next controls — not infinite scroll
- Detail page trigger dialog: Manual trigger from detail page opens a dialog (unlike list page play button which fires immediately)
- Workflow IDs changed: IDs use dashes without
agent_prefix (e.g.se-worknotagent_se_work). Display names are now descriptive (e.g. "SE Agent: Implement Fix + PR") - ticket_url auto-fill: For Jira and SideButton triggers, the ticket_url param auto-fills with
{{trigger.ticket_url}}— Cron leaves it empty - Context-aware variable hints: The form shows available template variables below the hint field, changing per trigger type (6 for Jira, 4 for SideButton, none for Cron)
- SideButton trigger layout: Workflow and Event Type dropdowns are side-by-side; Agent is on its own row below